<html>
<head><meta charset="utf-8"><title>capture_ananlysis algorithm · t-compiler/wg-rfc-2229 · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/index.html">t-compiler/wg-rfc-2229</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html">capture_ananlysis algorithm</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="245277450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245277450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245277450">(Jul 08 2021 at 06:47)</a>:</h4>
<p>I think we also need to include handling of closure and Fn trait analysis as part of the algorithm</p>



<a name="245277535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245277535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245277535">(Jul 08 2021 at 06:49)</a>:</h4>
<p>What do you think about: If after the ananlyis there is a place with mode = ByValue then the closure must be FnOnce. And if some place has UniqueImmBorrow/MutBorrow then the closure must be FnMut.</p>



<a name="245277787"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245277787" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245277787">(Jul 08 2021 at 06:53)</a>:</h4>
<p>Also i think our copy rule might be wrong.</p>
<p>Consider this:</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Point</span><span class="w"> </span><span class="p">{</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">};</span><span class="w"></span>

<span class="kd">let</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">   </span><span class="n">p</span><span class="p">.</span><span class="n">x</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"></span>
<span class="w">   </span><span class="kd">let</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">x</span><span class="p">;</span><span class="w"></span>
<span class="p">};</span><span class="w"></span>
</code></pre></div>
<p>After just the collection phase we'd see p.x -&gt; ByValue before (ByValue &gt; MutBorrow), and we'd borrow p.x by ImmRef which would cause the first statement in the closure to fail.</p>



<a name="245278573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245278573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245278573">(Jul 08 2021 at 07:05)</a>:</h4>
<p>Simplest solution to this might just be to ignore ByValue mode for Copy types</p>



<a name="245278673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245278673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245278673">(Jul 08 2021 at 07:06)</a>:</h4>
<p>In case it's a move closure then we want to have a ByValue mode for Copy types for the case where the user returns the thing, which should get handled based on the last rule of the move_x_from method</p>



<a name="245347812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245347812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245347812">(Jul 08 2021 at 17:54)</a>:</h4>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245277535">said</a>:</p>
<blockquote>
<p>What do you think about: If after the ananlyis there is a place with mode = ByValue then the closure must be FnOnce. And if some place has UniqueImmBorrow/MutBorrow then the closure must be FnMut.</p>
</blockquote>
<p>This sounds right.</p>



<a name="245347816"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245347816" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245347816">(Jul 08 2021 at 17:54)</a>:</h4>
<p>Wait</p>



<a name="245347857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245347857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245347857">(Jul 08 2021 at 17:54)</a>:</h4>
<p>It doesn't :)</p>



<a name="245347915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245347915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245347915">(Jul 08 2021 at 17:54)</a>:</h4>
<p>We should select the initial mode not by looking at the <em>final result</em> but based on the result <em>before</em> we apply any mapping</p>



<a name="245347964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245347964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245347964">(Jul 08 2021 at 17:54)</a>:</h4>
<p>The problem is that you can have move closures that are <code>Fn</code>, for example, but they will have <code>ByValue</code> captures</p>



<a name="245348023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348023">(Jul 08 2021 at 17:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245347915">said</a>:</p>
<blockquote>
<p>We should select the initial mode not by looking at the <em>final result</em> but based on the result <em>before</em> we apply any mapping</p>
</blockquote>
<p>Yes</p>



<a name="245348031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348031">(Jul 08 2021 at 17:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245277787">said</a>:</p>
<blockquote>
<p>Also i think our copy rule might be wrong.<br>
...<br>
After just the collection phase we'd see p.x -&gt; ByValue before (ByValue &gt; MutBorrow), and we'd borrow p.x by ImmRef which would cause the first statement in the closure to fail.</p>
</blockquote>
<p>I don't think this is correct</p>



<a name="245348067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348067">(Jul 08 2021 at 17:55)</a>:</h4>
<p>Or at least, not if we do the mapping of <code>ByValue(copy)</code> to <code>ref</code></p>



<a name="245348153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348153">(Jul 08 2021 at 17:56)</a>:</h4>
<p>in that case, we would see two accesses to <code>p.x</code>: one by mut ref and one by shared ref, and we would pick the mut ref</p>



<a name="245348199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348199">(Jul 08 2021 at 17:56)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245348067">said</a>:</p>
<blockquote>
<p>Or at least, not if we do the mapping of <code>ByValue(copy)</code> to <code>ref</code></p>
</blockquote>
<p>based on ho w we sdescribed the algorithm that happens after having collecting the places, I'm trying to see if we can avoid adding rules during. the collection phase</p>



<a name="245348221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348221">(Jul 08 2021 at 17:56)</a>:</h4>
<p>sure, but</p>



<a name="245348230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348230">(Jul 08 2021 at 17:56)</a>:</h4>
<p>it happens <em>before</em> we do minimization, right?</p>



<a name="245348278"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348278" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348278">(Jul 08 2021 at 17:57)</a>:</h4>
<p>This would happen before minizaiton yes</p>



<a name="245348333"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348333" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348333">(Jul 08 2021 at 17:57)</a>:</h4>
<p>right so I think the raw input is</p>
<div class="codehilite"><pre><span></span><code>(ByValue, `p.x`: u32)
(MutRef, `p.x`: u32)
</code></pre></div>



<a name="245348384"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348384" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348384">(Jul 08 2021 at 17:58)</a>:</h4>
<p>Yes</p>



<a name="245348390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348390">(Jul 08 2021 at 17:58)</a>:</h4>
<p>we would map the first entry to <code>(ref, p.x:u32)</code> but leave the second one alone</p>



<a name="245348417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348417">(Jul 08 2021 at 17:58)</a>:</h4>
<p>and then <em>during minimization</em>, we would coallesce those into <code>(mut-ref, p.x)</code>, right?</p>



<a name="245348606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348606">(Jul 08 2021 at 18:00)</a>:</h4>
<p>I see what you mean by minimzation, right now if see two exact same places we pick the higher mode right away</p>



<a name="245348678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348678">(Jul 08 2021 at 18:00)</a>:</h4>
<p>I see</p>



<a name="245348682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348682">(Jul 08 2021 at 18:00)</a>:</h4>
<p>I wasn't expecting that</p>



<a name="245348709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348709">(Jul 08 2021 at 18:00)</a>:</h4>
<p>So the data that will collected before we start processing is <code>p.x</code> ByValue</p>



<a name="245348730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348730">(Jul 08 2021 at 18:00)</a>:</h4>
<p>Yes</p>



<a name="245348738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348738">(Jul 08 2021 at 18:01)</a>:</h4>
<p>So that doesn't work :)</p>



<a name="245348747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348747">(Jul 08 2021 at 18:01)</a>:</h4>
<p>we have to do this map before any coallescing is done</p>



<a name="245348855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348855">(Jul 08 2021 at 18:02)</a>:</h4>
<p>Since Copy + ByValue = Ref, we can just ignore that as an entry early on</p>



<a name="245348955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245348955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245348955">(Jul 08 2021 at 18:02)</a>:</h4>
<p>because no escalation would happen</p>



<a name="245415892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245415892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245415892">(Jul 09 2021 at 08:37)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/pull/86995">https://github.com/rust-lang/rust/pull/86995</a></p>



<a name="245422639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245422639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245422639">(Jul 09 2021 at 09:46)</a>:</h4>
<p><span class="user-mention" data-user-id="281950">@Aman Arora</span> nice, I left a few comments, but this looks really good. Cool that it didn't change any of the results.</p>



<a name="245422648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245422648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245422648">(Jul 09 2021 at 09:46)</a>:</h4>
<p>(Except perhaps the new cases)</p>



<a name="245542824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245542824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245542824">(Jul 10 2021 at 10:38)</a>:</h4>
<p><span class="user-mention" data-user-id="281950">@Aman Arora</span> I'm still wondering why we can't just convert "copy" to "ref" very early on</p>



<a name="245542829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245542829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245542829">(Jul 10 2021 at 10:38)</a>:</h4>
<p>As an example, in the delegate, when we get a call to <code>consume</code>...</p>



<a name="245542837"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245542837" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245542837">(Jul 10 2021 at 10:38)</a>:</h4>
<p>I am thinking it might be nice if those callbacks immediately deferred to a central callback like:</p>



<a name="245542841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245542841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245542841">(Jul 10 2021 at 10:39)</a>:</h4>
<p><code>record_closure_capture(place, mode)</code></p>



<a name="245542844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245542844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245542844">(Jul 10 2021 at 10:39)</a>:</h4>
<p>and we could easily check in <code>consume</code> "is this a consume of a copy place? if so, convert to ref"</p>



<a name="245542848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245542848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245542848">(Jul 10 2021 at 10:39)</a>:</h4>
<p>that feels like it would simplify the handling there</p>



<a name="245562461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245562461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245562461">(Jul 10 2021 at 17:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245542824">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> I'm still wondering why we can't just convert "copy" to "ref" very early on</p>
</blockquote>
<p>No real reason, the benefit of not doing it is we store less data and proocess less data, the benefit of doing it would be explictness.</p>



<a name="245562480"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245562480" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245562480">(Jul 10 2021 at 17:35)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245542848">said</a>:</p>
<blockquote>
<p>that feels like it would simplify the handling there</p>
</blockquote>
<p>We don't really have to deal with them outside ignoring them right now</p>



<a name="245562539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245562539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245562539">(Jul 10 2021 at 17:36)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245542841">said</a>:</p>
<blockquote>
<p><code>record_closure_capture(place, mode)</code></p>
</blockquote>
<p>Does it mean we remove the initializing step, and the fact that we have somewhat of a map? That stores place -&gt; max(use). And rather have just a vecotr of (place, mode) pairs</p>



<a name="245600800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245600800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245600800">(Jul 11 2021 at 10:43)</a>:</h4>
<p>No, although that would indeed map to the "formal" model more  closely, but that's not what I meant</p>



<a name="245600838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245600838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245600838">(Jul 11 2021 at 10:44)</a>:</h4>
<p>maybe I have to read the code in non-diff form</p>



<a name="245601121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245601121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245601121">(Jul 11 2021 at 10:53)</a>:</h4>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245562461">said</a>:</p>
<blockquote>
<p>No real reason, the benefit of not doing it is we store less data and proocess less data, the benefit of doing it would be explictness.</p>
</blockquote>
<p>Why do we store less data? That surprises me. The main thing I'm interested in here is "obviously correct"</p>



<a name="245601125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245601125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245601125">(Jul 11 2021 at 10:53)</a>:</h4>
<p>We might be talking about slightly different things</p>



<a name="245601130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245601130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245601130">(Jul 11 2021 at 10:53)</a>:</h4>
<p>I'm not talking about the fact that in the code we do a "first step" of compressing all instances of the same place into one entry, by using a map instead of a vector</p>



<a name="245601132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245601132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245601132">(Jul 11 2021 at 10:53)</a>:</h4>
<p>(though we should discuss that; I think it's probably the right thing to do but i'd like to 1000% convince myself it's equivalent to the non-map version)</p>



<a name="245601178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245601178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245601178">(Jul 11 2021 at 10:54)</a>:</h4>
<p>I'm just talking about the way the code is structured -- I think I would find it simpler if we removed the idea of a "Copy" mode of access and <em>just</em> had <code>ref</code>, <code>ref mut</code>, and <code>move</code></p>



<a name="245601190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245601190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245601190">(Jul 11 2021 at 10:55)</a>:</h4>
<p>the only reasno, I think, not to do that is that the "expression use visitor" currently produces "by-value" also for <code>Copy</code> types, but we can do that mapping ourselves</p>



<a name="245615320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245615320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245615320">(Jul 11 2021 at 16:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245601178">said</a>:</p>
<blockquote>
<p>I'm just talking about the way the code is structured -- I think I would find it simpler if we removed the idea of a "Copy" mode of access and <em>just</em> had <code>ref</code>, <code>ref mut</code>, and <code>move</code></p>
</blockquote>
<p>Ah yes, I was talking about convering to a vec instead of a map. I could've probably organized my thoughts a bit better.</p>



<a name="245625133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245625133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245625133">(Jul 11 2021 at 20:33)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/capture_ananlysis.20algorithm/near/245601190">said</a>:</p>
<blockquote>
<p>the only reasno, I think, not to do that is that the "expression use visitor" currently produces "by-value" also for <code>Copy</code> types, but we can do that mapping ourselves</p>
</blockquote>
<p>So I created this PR where ExprUseVisitor would do the mapping: <a href="https://github.com/rust-lang/rust/pull/87069">https://github.com/rust-lang/rust/pull/87069</a></p>
<p>it didnt seem to affect clippy or any exisiting tests</p>



<a name="245735455"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245735455" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245735455">(Jul 12 2021 at 19:24)</a>:</h4>
<p><span class="user-mention" data-user-id="281950">@Aman Arora</span> I left some comments. I'm actually not opposed to the approach in <a href="https://github.com/rust-lang/rust/issues/87069">#87069</a> either, given that clippy is unaffected, but then let's remove the <code>CaptureMode</code> argument altogether and document that behavior.</p>



<a name="245735807"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245735807" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245735807">(Jul 12 2021 at 19:27)</a>:</h4>
<p>Yea that's what I was thinking</p>



<a name="245865177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245865177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245865177">(Jul 13 2021 at 18:12)</a>:</h4>
<p><span class="user-mention" data-user-id="281950">@Aman Arora</span> do you plan to update to remove <code>ConsumeMode</code> and document that <code>consume</code> is only invoked on moves that are not known to be copies?</p>



<a name="245865225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245865225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245865225">(Jul 13 2021 at 18:13)</a>:</h4>
<p>Yea, I pan on doing that tonight</p>



<a name="245865230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245865230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245865230">(Jul 13 2021 at 18:13)</a>:</h4>
<p>Plan*</p>



<a name="245865669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245865669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245865669">(Jul 13 2021 at 18:16)</a>:</h4>
<p>Great</p>



<a name="245923697"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245923697" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245923697">(Jul 14 2021 at 06:24)</a>:</h4>
<p>updated</p>



<a name="245968123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245968123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245968123">(Jul 14 2021 at 14:33)</a>:</h4>
<p><span class="user-mention" data-user-id="281950">@Aman Arora</span> <a href="https://github.com/rust-lang/rust/pull/87069#pullrequestreview-706347504">https://github.com/rust-lang/rust/pull/87069#pullrequestreview-706347504</a></p>



<a name="245968146"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/245968146" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#245968146">(Jul 14 2021 at 14:33)</a>:</h4>
<p>left 2 minor suggestions -- I think!</p>



<a name="246051820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis%20algorithm/near/246051820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/capture_ananlysis.20algorithm.html#246051820">(Jul 15 2021 at 04:54)</a>:</h4>
<p>updated</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>